#include "musicslider.h"
#include "ui_musicslider.h"

#include <QMouseEvent>
#include<QDebug>

MusicSlider::MusicSlider(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MusicSlider)
{
    ui->setupUi(this);

    // 初始情况下，还没有开始播放，将当前播放进度设置为0
     currentPos = 0;
     maxWidth = ui->inLine->width();
     moveSilder();
}

MusicSlider::~MusicSlider()
{
    delete ui;
}

void MusicSlider::mousePressEvent(QMouseEvent *event)
{
    // 注意：QMouseEvent中的pos()为⿏标相对于widget的坐标，不是相当于screen
    // 因此⿏标位置的 x 坐标可直接作为outLine的宽度
    currentPos = event->pos().x();
    moveSilder();


}

void MusicSlider::mouseMoveEvent(QMouseEvent *event)
{
    // 如果⿏标不在MusicSlider的矩形内，不进⾏拖拽
     QRect rect = QRect(0, 0,this->width(), this->height());//MusicSlider的矩形
     QPoint pos = event->pos();
     if(!rect.contains(pos)) //QRect类的contains方法功能是查询这个点是否在这个范围内
     {
        return;
     }
     //qDebug()<<rect<<"   "<<pos;
     // 根据⿏标滑动的位置更新outLine的宽度
     if(event->buttons() == Qt::LeftButton) //当鼠标移动时用buttons鼠标单击时用button
     {
         // 验证：⿏标点击的x坐标是否越界，如果越界将其调整到边界
         currentPos = event->pos().x();
         if(currentPos < 0)
         {
            currentPos = 0;
         }
         if(currentPos > maxWidth)
         {
            currentPos = maxWidth;
         }

         moveSilder();
      }
}

void MusicSlider::mouseReleaseEvent(QMouseEvent *event)
{
    //鼠标移动时
    //1、进度条随鼠标移动改变
    currentPos = event->pos().x();
    moveSilder();

    //2、向qqmusic发送修改音乐进度的信号
    emit setMusicSliderPosition((float)currentPos / (float)maxWidth);
}

void MusicSlider::moveSilder()
{
    // 根据当前进度设置外部滑动条的位置
     ui->outLine->setMaximumWidth(currentPos); //设置最小宽度和最大宽度
     ui->outLine->setGeometry(9,9, currentPos, 4);
}

void MusicSlider::setStep(float bf)
{
    currentPos = maxWidth*bf;
    moveSilder();
}
